The present invention is related to the field of average-case activity estimation for digital circuits, such as CMOS circuits.
In order to save power, you must first be able to measure power. Dynamic power in ASICs depends on the switching activity, and leakage power depends on the current state of the circuit, so power estimation can be reduced to estimating the chance of switching and the typical level at each node in the circuit. Together, the switching and level information will be called activity information or just activity in this disclosure.
The most obvious way to find out the activity of a circuit is to use a logic simulator, together with a method for creating typical patterns on the top-level inputs, usually a test-bench written in a Register Transfer Language. This has a number of disadvantages. First, it is very time-consuming to create a good test-bench for the circuit. Second, simulation takes a long time. Third, the results are only applicable to the mode of use that the test-bench was created for. Other modes may have very different power signatures, and it is difficult to tell whether a particular test-bench is typical or not.
The main advantage of a simulation approach is that one can guarantee that the circuit has the calculated activity for one particular mode of use, although it is completely unknown whether the calculated activity is representative. To provide a much faster way to determine representative activities, techniques have been developed using stochastic methods. Early approaches were mostly focused on testing circuits rather than power estimation. These approaches did not consider correlations between signals or between the same signal at different times, so they were not accurate for typical circuits.
Other techniques that considered Markov chains capture a better correlation between the same signal at different times (a Markov chain is a standard technique for describing the evolution of stochastic systems). These techniques also suggest an approach for correlating between different signals, which improves accuracy, but this has been found to be slow.
Yet another technique includes a fast way to use correlations between signals, and then use a loop unrolling method to apply this to state machines. Although the algorithm for this technique works well for circuits with high degrees of re-convergent fan-out, it is a complicated algorithm.
Thus, there is a need for a simple and efficient algorithm for estimating the average-case activity in a digital circuit.